فرض کن میخوای یه وبسایت مثل google.com رو باز کنی. مرورگر نمیدونه آدرس IP گوگل چیه، پس از دفترچه تلفن DNS میپرسه. این دفترچه تلفن رو توی لینوکس با فایل /etc/resolv.conf یا systemd-resolved تنظیم میکنی. این جلسه بهت یاد میده چطور این کار رو انجام بدی.
DNS (Domain Name System) سرویسی است که نامهای دامنه (مثل google.com) را به آدرس IP (مثل 172.217.16.46) تبدیل میکند. بدون DNS، باید همه آدرسهای IP را به خاطر بسپاریم که غیرممکن است! برای تنظیم DNS در لینوکس، دو روش اصلی وجود دارد:
/etc/resolv.confsystemd-resolved یا NetworkManager
این روش قدیمیترین و سادهترین روش تنظیم DNS است. با ویرایش فایل /etc/resolv.conf میتوانید سرورهای DNS مورد نظر را اضافه کنید.
توضیح: nano یک ویرایشگر ساده است. میتوانید از vi یا vim نیز استفاده کنید.
خطوط زیر را به فایل اضافه کنید:
توضیح:
search → دامنه پیشفرض برای جستجو (اختیاری).nameserver → آدرس IP سرور DNS. میتوانید چندین سرور اضافه کنید.فایل را ذخیره کنید (Ctrl+O در nano) و خارج شوید (Ctrl+X).
توضیح: اگر ping google.com کار کند، یعنی DNS به درستی تنظیم شده است.
/etc/resolv.conf مستقیماً ویرایش میشود. اما در سیستمهای مدرن، این فایل ممکن است توسط NetworkManager یا systemd-resolved بازنویسی شود.
در سیستمهایی که از NetworkManager یا systemd-resolved استفاده میکنند، تغییرات /etc/resolv.conf ممکن است موقت باشند و پس از ریبوت یا راهاندازی مجدد NetworkManager از بین بروند. برای تغییر دائمی، از روش دوم استفاده کنید.
systemd-resolved یک سرویس مدرن برای مدیریت DNS در سیستمهای مبتنی بر systemd است. این روش دائمی و مدیریتشده است.
توضیح: فعالسازی و راهاندازی سرویس systemd-resolved.
systemd-resolved وظیفه مدیریت DNS را در سیستمهای مدرن بر عهده دارد.
یک فایل جدید در /etc/systemd/resolved.conf.d/ ایجاد کنید:
خطوط زیر را به فایل اضافه کنید:
توضیح:
DNS= → لیست سرورهای DNS (با فاصله جدا کنید).Domains=~. → دامنه پیشفرض (اختیاری).
توضیح: resolvectl status وضعیت DNS را نمایش میدهد.
توضیح: تنظیم DNS برای رابط شبکه eth0 بهطور خاص.
resolvectl ابزار خط فرمان برای مدیریت systemd-resolved است.
اگر از NetworkManager استفاده میکنید، میتوانید DNS را از طریق nmcli یا nmtui تنظیم کنید.
توضیح: تنظیم DNS برای اتصال eth0 با nmcli و راهاندازی مجدد اتصال.
nmtui را اجرا کنید، به Edit a connection بروید، اتصال مورد نظر را انتخاب کنید، در بخش IPv4 Configuration یا IPv6 Configuration، گزینه DNS servers را پیدا کنید و آدرس DNS را وارد کنید.
nmcli con mod استفاده کنید.
| ویژگی | روش سنتی (resolv.conf) | روش مدرن (systemd-resolved) |
|---|---|---|
| دائمی بودن | ❌ موقت (در بسیاری از سیستمها) | ✅ دائمی |
| مدیریت خودکار | ❌ خیر | ✅ بله (با systemd) |
| پشتیبانی از چندین رابط | ❌ خیر | ✅ بله (با resolvectl) |
| سادگی | ✅ بسیار ساده | ⚡ کمی پیچیدهتر |
| توصیه در سیستمهای مدرن | ❌ خیر | ✅ بله |
/etc/resolv.conf با nameserver 8.8.8.8systemd-resolved و تنظیم با resolvectl یا فایل پیکربندیnmcli con mod برای تنظیم DNSresolvectl status (مشاهده)، resolvectl dns (تنظیم)، nmcli con mod (تنظیم در NetworkManager)ping google.com یا nslookup google.com بررسی کنید.